package kernel;

import model.Cliente;

public class Servidor extends Valores {

	private Cliente clienteSendoAtendido;

	public Servidor() {
		setClienteSendoAtendido(null);
	}

	//verifica se o servidor esta atendendo alguem
	public boolean estaVazio() {
		if (getClienteSendoAtendido() == null)
			return true;
		else
			return false;
	}

	//verifica quantas vezes o cliente ja esteve no servidor
	public void atendeCliente(Cliente c) {
		if (c.getQtdServicos() == 0) {
			c.set1VezNoServidor(GeraEventoSim.getInstance().getTempoSimulacao());
		} else if (c.getQtdServicos() == 1) {
			c.set2VezNoServidor(GeraEventoSim.getInstance().getTempoSimulacao());
		} else {
			c.setinstNVezServidor(GeraEventoSim.getInstance()
					.getTempoSimulacao());
		}
		setClienteSendoAtendido(c);
	}

	//retira o cliente do servidor e aumenta a quantidade de vezes q ele foi servido
	public Cliente removeClienteAtendimento() {
		Cliente c = getClienteSendoAtendido();
		setClienteSendoAtendido(null);
		if (c.getQtdServicos() >= 1) {
			c.setInstSaidaSistema(GeraEventoSim.getInstance()
					.getTempoSimulacao());
			GeraEventoSim.getInstance().getRodadaAtual()
					.computaClienteEstatistica(c);

			if (GeraEventoSim.getInstance().getRodadas().size() == 1)
				GeraEventoSim.getInstance().tempoUltimosIncrementosFila2 += (c
						.getInstSaidaSistema() - c.getChegadaFila2());
		}
		c.setQtdServicos(c.getQtdServicos() + 1);
		return c;
	}

	public Cliente getClienteSendoAtendido() {
		return clienteSendoAtendido;
	}

	public void setClienteSendoAtendido(Cliente freguesServindo) {
		this.clienteSendoAtendido = freguesServindo;
	}
}
